<?php

App::uses('AppController', 'Controller');

/**
 * Pedidos Controller
 *
 * @property Pedido $Pedido
 * @property PaginatorComponent $Paginator
 */
class PedidosController extends AppController
{

    public $layout = 'recargas';
    public $uses = array('Pedido', 'Movimiento', 'User', 'Recarga', 'Porcentaje');
    //public $helpers = array('Js');

    /**
     * Components
     *
     * @var array
     */
    public $components = array('Paginator');

    /**
     * index method
     *
     * @return void
     */
    public function solicita()
    {
        if ($this->request->is('post'))
        {
            //debug($this->request->data);die;
            $idUsuario = $this->Session->read('Auth.User.id');
            $usuario = $this->User->find('first', array('recursive' => -1, 'conditions' => array('User.id' => $idUsuario)));
            $montoactual = $usuario['User']['monto_tmp'];
            if ($montoactual < 50)
            {
                $this->Pedido->create();
                $this->request->data['Pedido']['user_id'] = $this->Session->read('Auth.User.id');
                if ($this->Pedido->save($this->request->data))
                {
                    $this->Session->setFlash('Su solicitud fue enviada correctamente!!!', 'msgbueno');
                    $this->redirect(array('controller' => 'Clientes', 'action' => 'index'));
                } else
                {

                    $this->Session->setFlash('No se envio la solicitud!!!', 'msgerror');
                    $this->redirect(array('controller' => 'Clientes', 'action' => 'index'));
                }
            } else
            {
                $this->Session->setFlash('No puede solicitar todavia tiene ' . $montoactual . ' Bs', 'msginfo');
                $this->redirect(array('controller' => 'Clientes', 'action' => 'index'));
            }
        }
    }

    public function solicitudes()
    {
        $pedidos = $this->Pedido->find('all', array('recursive' => 0, 'order' => 'Pedido.id DESC', 'conditions' => array('Pedido.estado' => 0)));
        $this->set(compact('pedidos'));
    }

    public function clientes()
    {
        //$movimiento =$this->Movimiento->find('first',array('recursive' => -1 ,'order' => 'Movimiento.id DESC'));
        //$this->layout = 'prueba';
        $fecha_tmp = $this->Session->read('Auth.User.fecha_tmp');
        if (date('Y-m-d') != $fecha_tmp)
        {
            $this->restaura();
        }
        $usuarios = $this->User->find('all', array('recursive' => -1, 'conditions' => array('User.role' => 'diler')));
        $this->set(compact('usuarios', 'movimiento'));
    }

    public function ajaxregistra($idUsuario = null)
    {
        $this->layout = 'ajax';
        //$movimiento =$this->Movimiento->find('first',array('recursive' => -1 ,'order' => 'Movimiento.id DESC'));
        if (!empty($this->request->data))
        {
            $movimiento = $this->Movimiento->find('first', array('recursive' => -1, 'order' => 'Movimiento.id DESC'));

            if ($movimiento['Movimiento']['total'] >= $this->request->data['Pedido']['monto_solicitado'])
            {
                $this->Pedido->create();
                $this->request->data['Pedido']['user_id'] = $idUsuario;
                $this->request->data['Pedido']['estado'] = 1;
                if ($this->Pedido->save($this->request->data))
                {
                    $idPedido = $this->Pedido->getLastInsertID();
                    $usuario = $this->User->find('first', array('conditions' => array('User.id' => $idUsuario
                        //,'fecha_tmp' => date('y-m-d')
                    )));
                    $this->User->id = $idUsuario;
                    if (!empty($usuario))
                    {
                        $this->request->data['User']['monto_tmp'] = $usuario['User']['monto_tmp'] + $this->request->data['Pedido']['monto_solicitado'];
                    } else
                    {
                        $this->request->data['User']['monto_tmp'] = $this->request->data['Pedido']['monto_solicitado'];
                    }

                    $this->request->data['User']['fecha_tmp'] = date('y-m-d');
                    $this->User->save($this->request->data);

                    $this->Movimiento->create();
                    $this->request->data['Movimiento']['pedido_id'] = $idPedido;
                    $this->request->data['Movimiento']['salida'] = $this->request->data['Pedido']['monto_solicitado'];
                    $this->request->data['Movimiento']['total'] = $movimiento['Movimiento']['total'] - $this->request->data['Pedido']['monto_solicitado'];
                    $this->Movimiento->save($this->request->data);

                    $this->Session->setFlash('Se registro correctamente!!!', 'msgbueno');
                    $this->redirect(array('action' => 'clientes'));
                } else
                {
                    $this->Session->setFlash('No se envio la solicitud!!!', 'msgerror');
                    $this->redirect(array('action' => 'clientes'));
                }
            } else
            {
                $this->Session->setFlash('No se puede !!!', 'msgerror');
                $this->redirect(array('action' => 'clientes'));
            }
        }
        $usuario = $this->User->find('first', array('recursive' => -1, 'conditions' => array('User.id' => $idUsuario)));
        $this->set(compact('usuario'));
        //debug($idUsuario);
        //debug($this->request->data);exit;
    }

    public function ingreso()
    {

        if (!empty($this->request->data))
        {
            $movimiento = $this->Movimiento->find('first', array('recursive' => -1, 'order' => 'Movimiento.id DESC'));
            $this->Movimiento->create();
            $this->request->data['Movimiento']['ingreso'];
            $this->request->data['Movimiento']['total'] = $movimiento['Movimiento']['total'] + $this->request->data['Movimiento']['ingreso'];
            $this->Movimiento->save($this->request->data);
            $this->Session->setFlash('INGRESO REGISTRADO CON EXITO!!!', 'msgbueno');
            $this->redirect(array('action' => 'clientes'));
        } else
        {
            //$this->Session->setFlash('INGRESO REGISTRADO CON EXITO!!!');
            $this->redirect(array('action' => 'clientes'));
        }
    }

    public function restaura()
    {
        $usuarios = $this->User->find('all', array('recursive' => -1, 'conditions' => array('User.role !=' => 'admin')));
        foreach ($usuarios as $u)
        {
            /* $this->User->id = $u['User']['id'];
              $this->request->data['User']['monto_tmp'] = 0.00;
              $this->User->save($this->request->data['User']); */
        }
    }

    public function listado()
    {
        $pedidos = $this->Pedido->find('all', array(
            'conditions' => array('Pedido.estado' => 0)
        ));

        $this->set(compact('pedidos'));
    }

    public function ajaxconfirma($idPedido = null)
    {
        $this->layout = 'ajax';
        $pedido = $this->Pedido->find('first', array('conditions' => array('Pedido.id' => $idPedido)));
        $monto = $pedido['Pedido']['monto_solicitado'];
        $usuario = $pedido['User']['nombre'];
        $dcp = $this->Porcentaje->find('all', array(
            'recursive' => -1,
            'fields' => array('id', 'monto')
        ));
        $this->set(compact('monto', 'usuario', 'idPedido', 'dcp', 'pedido'));
    }

    public function confirmarecarga($idPedido = null)
    {
        if (!empty($this->request->data))
        {
            //debug($this->request->data);
            //die;
            $idPedido = $this->request->data['Movimiento']['idPedido'];
            $movimiento = $this->Movimiento->find('first', array('recursive' => -1, 'order' => 'Movimiento.id DESC'));
            $pedido = $this->Pedido->find('first', array('recursive' => -1, 'conditions' => array('Pedido.id' => $idPedido)));
            $usuario = $this->User->find('first', array('conditions' => array('User.id' => $pedido['Pedido']['user_id'])));
            if (!empty($movimiento))
            {
                if ($movimiento['Movimiento']['total'] >= $pedido['Pedido']['monto_solicitado'])
                {
                    $this->Pedido->id = $idPedido;
                    $this->request->data['Pedido']['estado'] = 1;
                    $this->Pedido->save($this->request->data);

                    $this->Movimiento->create();
                    $this->request->data['Movimiento']['user_id'] = $this->Session->read('Auth.User.id');

                    //si va por uno o por otro
                    if (empty($this->request->data['Movimiento']['idPedido']))
                        $this->request->data['Movimiento']['pedido_id'] = 0;

                    if ($idPedido == null)
                    {
                        $this->request->data['Movimiento']['pedido_id'] = 0;
                    } else
                    {
                        $this->request->data['Movimiento']['pedido_id'] = $idPedido;
                    }

                    if (empty($this->request->data['Movimiento']['monto']))
                    {
                        $this->request->data['Movimiento']['salida'] = $pedido['Pedido']['monto_solicitado'];
                        $this->request->data['Movimiento']['total'] = $movimiento['Movimiento']['total'] - $pedido['Pedido']['monto_solicitado'];
                    } else
                    {
                        $this->request->data['Movimiento']['salida'] = $this->request->data['Movimiento']['monto'];
                        $this->request->data['Movimiento']['total'] = $movimiento['Movimiento']['total'] - $this->request->data['Movimiento']['monto'];
                    }
                    //debug($this->request->data['Movimiento']);die;
                    $this->Movimiento->save($this->request->data['Movimiento']);

                    $this->User->id = $pedido['Pedido']['user_id'];
                    $this->request->data['User']['monto_tmp'] = $usuario['User']['monto_tmp'] + $pedido['Pedido']['monto_solicitado'];
                    $this->User->save($this->request->data);

                    $this->Session->setFlash('Se Recargo correctamente!!!', 'msgbueno');
                    $this->redirect(array('controller' => 'Movimientos', 'action' => 'index'));
                } else
                {
                    $this->Session->setFlash('No se puede no le alcanza!!!', 'msgerror');
                    $this->redirect(array('action' => 'listado'));
                }
            } else
            {
                $this->Session->setFlash('No se puede no le alcanza!!!', 'msgerror');
                $this->redirect(array('action' => 'listado'));
            }
        }
    }

    public function ajaxpendientes($num = null)
    {
        $this->layout = 'ajax';

        $numero = $this->Pedido->find('count', array(
            'conditions' => array('Pedido.estado' => '0')
        ));

        //debug($numero);exit;
        $this->set(compact('numero', 'num'));
    }

    public function ajaxhistorial($idUsuario = null)
    {
        $this->layout = 'ajax';
        $entregas = $this->Pedido->find('all', array('recursive' => -1, 'order' => 'Pedido.id DESC', 'conditions' => array('Pedido.user_id' => $idUsuario)));
        //debug($pedidos);exit;
        $usuario = $this->User->find('first', array('conditions' => array('User.id' => $idUsuario)));
        $this->set(compact('entregas', 'usuario'));
    }

    public function ajaxventas($idUsuario = null)
    {
        $this->layout = 'ajax';

        $ventas2 = $this->Recarga->find('all', array('recursive' => 0, 'conditions' => array('Recarga.user_id' => $idUsuario)));
        //debug($ventas);exit;
        $usuario = $this->User->find('first', array('recursive' => -1, 'conditions' => array('User.id' => $idUsuario)));
        $this->set(compact('ventas2', 'usuario', 'idUsuario'));
    }

    public function eliminapedido($idPedido = null, $idUsuario = null)
    {
        //debug($idUsuario);exit;
        $this->layout = 'ajax';
        $pedido = $this->Pedido->find('first', array('recursive' => -1, 'conditions' => array('Pedido.id' => $idPedido)));
        $movimiento = $this->Movimiento->find('first', array('recursive' => -1, 'order' => 'Movimiento.id DESC'));
        $movimiento_pedido = $this->Movimiento->find('first', array('recursive' => -1, 'conditions' => array('Movimiento.pedido_id' => $idPedido)));
        $this->Movimiento->delete($movimiento_pedido['Movimiento']['id']);
        $this->Movimiento->id = $movimiento['Movimiento']['id'];
        $this->request->data['Movimiento']['total'] = $pedido['Pedido']['monto_solicitado'] + $movimiento['Movimiento']['total'];
        $this->Movimiento->save($this->request->data);
        $this->Pedido->delete($idPedido);

        $ususario = $this->User->find('first', array('recursive' => -1, 'conditions' => array('User.id' => $idUsuario)));
        $this->User->id = $idUsuario;
        $this->request->data['User']['monto_tmp'] = $ususario['User']['monto_tmp'] - $pedido['Pedido']['monto_solicitado'];

        $this->User->save($this->request->data);

        $this->Session->setFlash('Se elimino correctamente!!!', 'msgbueno');
        $this->redirect(array('action' => 'clientes'));
    }

    public function ajaxbusca()
    {
        $this->layout = 'ajax';
        debug($this->request->data);
        exit;
        $clave = $this->request->data['User']['codigo'];
    }

    public function recargamodal()
    {
        $this->layout = 'ajax';
        $pedido = $this->Pedido->find('first', array('conditions' => array('Pedido.id' => $idPedido)));
        $monto = $pedido['Pedido']['monto_solicitado'];
        $usuario = $pedido['User']['nombre'];
        $dcp = $this->Porcentaje->find('all', array(
            'recursive' => -1,
            'fields' => array('id', 'monto')
        ));
        
        $dcd = $this->User->find('all', array(
            'recursive' => -1,
            'fields' => array('id', 'nombre'),
            'conditions'=>array('User.role'=>'diler')
        ));
        
        $this->set(compact('monto', 'usuario', 'idPedido', 'dcp', 'pedido', 'dcd'));
    }

    public function ingresomodal()
    {
        $this->layout = 'ajax';
    }

    public function modalsolicita()
    {
        $this->layout = 'ajax';
    }

}

?>